package fiber.test; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import static fiber.io.Log.log; public class JavascriptBenchmark { public static void main(String[] args) { ScriptEngineManager sem = new ScriptEngineManager(); try { log.info("init..."); int K = 1; // Integer.parseInt(args[0]); String cmd = "function count(sum) { for(var i = 0 ; i < 100000 ; i++) sum += i; return sum; }"; for (int k = 0; k < K; k++) { ScriptEngine e = sem.getEngineByName("javascript"); e.eval(cmd); final Invocable f = (Invocable) e; int N = 100; for (int j = 0; j < 100; j++) { long t1 = System.currentTimeMillis(); for (int i = 0; i < N; i++) { Object re = f.invokeFunction("count", 0); log.info("[{}] {}", i, re); } long t2 = System.currentTimeMillis(); log.info("average:{}", N * 1000 / (t2 - t1)); } } } catch (Exception e) { e.printStackTrace(); } } }